import ico from '../assets/logo.png'
import { Message } from 'element-ui';
export default {
    transformFile(file, e) {
        //promise执行多步操作非常好用，这个过程是有一定的顺序的，你必须保证上一步完成，才能顺利进行下一步。
        //有两个参数 resolve同意的意思  reject拒绝的意思
        return new Promise((resolve, reject) => {

            const reader = new FileReader();//创建读取文件对象
            reader.readAsDataURL(file);//调用方法转base64
            reader.onload = () => { //文件读取成功完成的触发
                const canvas = document.createElement('canvas'); //新建canvas 画布
                const img = document.createElement('img'); //新建一个img标签
                img.src = reader.result; //读取结果 下载图片
                img.onload = () => { //绑定事件 下载完成
                    if ((img.width > 500 || img.height > 600) && e) {
                        Message.error('缩略图尺寸不对')
                        reject(false)
                    } else {


                        const ctx = canvas.getContext('2d');//获取画笔对象
                        let width = img.width; //图片的宽高
                        let height = img.height;
                        canvas.width = width;//画布的宽高
                        canvas.height = height;
                        ctx.drawImage(img, 0, 0, width, height);//绘制图像 图片大小没变
                        var self = this
                        var icoimg = new Image()
                        icoimg.src = ico
                        icoimg.onload = function () {
                            // let lenw = Math.trunc((width / icoimg.width))
                            // let lenh = Math.trunc((height / icoimg.height))
                            // for (var i = 0; i < lenh; i++) {
                            //     for (var j = 0; j < lenw; j++) {
                            //         var x = (j * icoimg.width);
                            //         var y = (i * icoimg.height) + i * 100;
                            //         ctx.drawImage(icoimg, x, y, icoimg.width, icoimg.height);// 绘制图像 图片大小没变
                            //     }
                            // }
                            ctx.drawImage(icoimg, (width - icoimg.width) / 2, (height - icoimg.height) / 2, icoimg.width, icoimg.height)
                            let dataUrl = canvas.toDataURL("image/jpeg", 0.5) //输出压缩后的base64
                            //执行下一步操作  将裁剪base64的图片转换为file文件
                            resolve(self.dataURLtoFile(dataUrl, file.name))
                        }


                        // ctx.fillStyle = '#ffffff';// 设置填充字号和字体，样式
                        // ctx.textBaseline = 'middle';
                        // // 设置右对齐
                        // ctx.textAlign = 'right'
                        // ctx.rotate(0 * Math.PI / 180);//旋转画笔 角度
                        //ctx.globalAlpha = .5; //透明度
                        // if (2000000 < width * height && width * height < 4000000) {
                        //     ctx.font = "80px Arial";
                        // } else if (width * height > 4000000) {
                        //     ctx.font = "100px Arial";  // 设置文本大小和字体
                        //     ctx.fillText('仅 供 测 试 使 用', width / 1.5, height / 8); //绘制填充文本(str,x,y) 填充字体的 坐标
                        //     ctx.fillText('仅 供 测 试 使 用', width - 20, height - 20);// 在指定位置绘制文字，这里指定距离右下角20坐标的地方
                        // } else {
                        //     ctx.font = "30px Arial";
                        // }
                        // ctx.fillText('仅 供 测 试 使 用', width / 8, height / 8);
                        // ctx.fillText('仅 供 测 试 使 用', width - 20, height - 20);// 在指定位置绘制文字，这里指定距离右下角20坐标的地方
                        /* canvas.toBlob(resolve); */
                        //压缩图片质量 范围 0~1
                        // let dataUrl = canvas.toDataURL("image/jpeg", 0.5) //输出压缩后的base64
                        //执行下一步操作  将裁剪base64的图片转换为file文件
                        // resolve(this.dataURLtoFile(dataUrl, file.name))
                    }
                };
            };
        });
    },
    dataURLtoFile(dataurl, filename) {
        let arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
            bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
        while (n--) {
            u8arr[n] = bstr.charCodeAt(n);
        }
        return new File([u8arr], filename, { type: mime });
    },


}